gtk4.git
5 years agolevelbar: Chainup to parent buildable when handling custom tags
Stefano Facchini [Mon, 6 Jul 2020 19:23:43 +0000 (21:23 +0200)]
levelbar: Chainup to parent buildable when handling custom tags

This is necessary to handle <layout> tags.

5 years agoMerge branch 'patch-1' into 'master'
Matthias Clasen [Tue, 7 Jul 2020 05:08:19 +0000 (05:08 +0000)]
Merge branch 'patch-1' into 'master'

Fix typo: Filer -> Filter

See merge request GNOME/gtk!2203

5 years agoUpdate Ukrainian translation
Yuri Chornoivan [Tue, 7 Jul 2020 04:45:03 +0000 (04:45 +0000)]
Update Ukrainian translation

5 years agoFix typo: Filer -> Filter
Yuri Chornoivan [Tue, 7 Jul 2020 04:41:44 +0000 (04:41 +0000)]
Fix typo: Filer -> Filter

5 years agoUpdate Romanian translation
Daniel Șerbănescu [Mon, 6 Jul 2020 20:41:16 +0000 (20:41 +0000)]
Update Romanian translation

5 years agoUpdate Romanian translation
Daniel Șerbănescu [Mon, 6 Jul 2020 20:38:44 +0000 (20:38 +0000)]
Update Romanian translation

5 years agoUpdate Catalan translation
Jordi Mas [Mon, 6 Jul 2020 20:35:10 +0000 (22:35 +0200)]
Update Catalan translation

5 years agoMerge branch 'wip/otte/filterlistmodel' into 'master'
Matthias Clasen [Mon, 6 Jul 2020 15:42:44 +0000 (15:42 +0000)]
Merge branch 'wip/otte/filterlistmodel' into 'master'

Improve GtkFilterListModel

See merge request GNOME/gtk!2199

5 years agoMerge branch 'file-chooser-api-cleanups' into 'master'
Matthias Clasen [Mon, 6 Jul 2020 15:41:56 +0000 (15:41 +0000)]
Merge branch 'file-chooser-api-cleanups' into 'master'

File chooser api cleanups

See merge request GNOME/gtk!2195

5 years agofilechooser: Add a readonly :shortcut-folders property
Matthias Clasen [Mon, 6 Jul 2020 15:03:02 +0000 (11:03 -0400)]
filechooser: Add a readonly :shortcut-folders property

This makes the shortcut folders list accessible in the
the inspector.

5 years agofilechooser: Add gtk_file_chooser_get_shortcuts
Matthias Clasen [Sun, 5 Jul 2020 02:08:33 +0000 (22:08 -0400)]
filechooser: Add gtk_file_chooser_get_shortcuts

Replace gtk_file_chooser_list_shortcuts with a new
api that returns a list model.

Update all callers.

5 years agofilechooser: Add a readonly :filters property
Matthias Clasen [Mon, 6 Jul 2020 14:34:33 +0000 (10:34 -0400)]
filechooser: Add a readonly :filters property

This makes the filters list accessible in the
the inspector.

5 years agofilechooser: Add gtk_file_chooser_get_filters
Matthias Clasen [Sat, 4 Jul 2020 16:15:47 +0000 (12:15 -0400)]
filechooser: Add gtk_file_chooser_get_filters

Replace gtk_file_chooser_list_filters with a new
api that returns a list model.

Update all callers.

5 years agoUpdate Catalan translation
Jordi Mas [Mon, 6 Jul 2020 07:41:45 +0000 (09:41 +0200)]
Update Catalan translation

5 years agoUpdate Catalan translation
Jordi Mas [Mon, 6 Jul 2020 06:54:41 +0000 (08:54 +0200)]
Update Catalan translation

5 years agotestsuite: Add more filterlistmodel tests
Benjamin Otte [Sun, 5 Jul 2020 17:25:15 +0000 (19:25 +0200)]
testsuite: Add more filterlistmodel tests

These ones try to be exhaustive and randomly catch weird cases.

As such, the tests are more complicated and harder to grasp.
Sorry.

5 years agobitset: Fix typo: gtk_bitset_slice() => gtk_bitset_splice()
Benjamin Otte [Mon, 6 Jul 2020 01:41:12 +0000 (03:41 +0200)]
bitset: Fix typo: gtk_bitset_slice() => gtk_bitset_splice()

5 years agobitset: Don't overflow when splicing
Benjamin Otte [Mon, 6 Jul 2020 01:35:17 +0000 (03:35 +0200)]
bitset: Don't overflow when splicing

Testcase added.

5 years agogtk-demo: Use a progressbar in the words demo
Matthias Clasen [Tue, 30 Jun 2020 14:38:59 +0000 (10:38 -0400)]
gtk-demo: Use a progressbar in the words demo

This looks better and a bit more polished.

5 years agogtk-demo: No selection in the words demo
Matthias Clasen [Tue, 30 Jun 2020 11:55:15 +0000 (07:55 -0400)]
gtk-demo: No selection in the words demo

This demo is about filtering, not about selection,
so use a GtkNoSelection.

5 years agogtk-demo: Cosmetic fixes for the words demo
Matthias Clasen [Tue, 30 Jun 2020 11:51:59 +0000 (07:51 -0400)]
gtk-demo: Cosmetic fixes for the words demo

Set a window size, and don't put newlines in titles, left align and
ellipsize the label.

5 years agodemo: Make words listview load async
Benjamin Otte [Tue, 30 Jun 2020 21:31:49 +0000 (23:31 +0200)]
demo: Make words listview load async

And add an "Open" button (why are filechooser buttons such a catastrophe
that I can't make them smaller?).

5 years agofilterlistmodel: Look at type of change
Benjamin Otte [Tue, 30 Jun 2020 02:18:59 +0000 (04:18 +0200)]
filterlistmodel: Look at type of change

This way we can avoid refiltering most of an already filtered list when
the change becomes more strict.

5 years agogtk-demo: Add incremental filtering to words demo
Benjamin Otte [Tue, 30 Jun 2020 02:03:07 +0000 (04:03 +0200)]
gtk-demo: Add incremental filtering to words demo

5 years agofilterlistmodel: Add gtk_filter_list_model_get_pending()
Benjamin Otte [Tue, 30 Jun 2020 02:01:39 +0000 (04:01 +0200)]
filterlistmodel: Add gtk_filter_list_model_get_pending()

This allows tracking if the model is busy filtering.

5 years agofilterlistmodel: Add incremental filtering
Benjamin Otte [Tue, 30 Jun 2020 01:32:28 +0000 (03:32 +0200)]
filterlistmodel: Add incremental filtering

5 years agofilterlistmodel: Rewrite with bitset data structure
Benjamin Otte [Mon, 29 Jun 2020 17:04:46 +0000 (19:04 +0200)]
filterlistmodel: Rewrite with bitset data structure

Bitsets are more powerful, less memory intensive and faster than the old
GtkRbTree version.

5 years agogtk-demo: Add a listview demo for filtering strings
Benjamin Otte [Sat, 27 Jun 2020 04:38:20 +0000 (06:38 +0200)]
gtk-demo: Add a listview demo for filtering strings

5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Mon, 6 Jul 2020 00:42:14 +0000 (00:42 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

Matthiasc/for master

See merge request GNOME/gtk!2198

5 years agofilefilter: Cosmetics
Matthias Clasen [Sun, 5 Jul 2020 23:36:45 +0000 (19:36 -0400)]
filefilter: Cosmetics

Various cleanups to make this code look less ancient.

5 years agofilefilter: Cosmetics
Matthias Clasen [Sun, 5 Jul 2020 23:54:20 +0000 (19:54 -0400)]
filefilter: Cosmetics

5 years agofilefilter: Header file cosmetics
Matthias Clasen [Sun, 5 Jul 2020 23:36:45 +0000 (19:36 -0400)]
filefilter: Header file cosmetics

5 years agofilefilter: Fix an embarrassing oversight
Matthias Clasen [Sun, 5 Jul 2020 23:32:36 +0000 (19:32 -0400)]
filefilter: Fix an embarrassing oversight

I forgot to remove some dead code, and left the
pixbuf_formats list in the rule union. Oops.

5 years agoMerge branch 'file-filter2' into 'master'
Matthias Clasen [Sun, 5 Jul 2020 20:32:05 +0000 (20:32 +0000)]
Merge branch 'file-filter2' into 'master'

Make GtkFileFilter a GtkFilter

See merge request GNOME/gtk!2190

5 years agofilefilter: Cleanups and optimizations
Matthias Clasen [Sun, 5 Jul 2020 19:07:36 +0000 (15:07 -0400)]
filefilter: Cleanups and optimizations

Make mime-type rules hold multiple types. Store the
content types, so we don't have to do mime-type -> content-type
conversion in the match function. Store content types for the
pixbuf-formats rule as well, so we can avoid memory allocation
in the match function altogether.

5 years agodocs: Cleanups for the file filter docs
Matthias Clasen [Sat, 4 Jul 2020 14:24:09 +0000 (10:24 -0400)]
docs: Cleanups for the file filter docs

Now that GtkFileFilter is a GtkFilter, move it to the
filter section of the docs. While we are at it, touch
up the docs in some places.

5 years agoDrop gtk_file_filter_filter
Matthias Clasen [Sat, 4 Jul 2020 15:06:36 +0000 (11:06 -0400)]
Drop gtk_file_filter_filter

It has been superseded by gtk_filter_match.

5 years agoStop using gtk_file_filter_filter
Matthias Clasen [Sat, 4 Jul 2020 15:05:43 +0000 (11:05 -0400)]
Stop using gtk_file_filter_filter

Make all users of GtkFileFilter use it via the
GtkFilter api. This is in preparation for dropping
gtk_filter_filter_filter.

5 years agofilefilter: Convert to a GtkFilter
Matthias Clasen [Sat, 4 Jul 2020 14:57:07 +0000 (10:57 -0400)]
filefilter: Convert to a GtkFilter

Make GtkFileFilter implement GtkFilter.

5 years agofilefilter: Drop GtkFileFilterFlags
Matthias Clasen [Sun, 5 Jul 2020 18:24:21 +0000 (14:24 -0400)]
filefilter: Drop GtkFileFilterFlags

Replace gtk_file_filter_get_needed by gtk_file_filter_get_attributes,
which directly returns the attributes that are needed.

Update all callers.

5 years agofilefilter: Drop custom filters
Matthias Clasen [Sun, 5 Jul 2020 17:51:42 +0000 (13:51 -0400)]
filefilter: Drop custom filters

These don't work with native file choosers.

5 years agofilefilter: Drop GtkFileFilterInfo
Matthias Clasen [Sat, 4 Jul 2020 03:58:07 +0000 (23:58 -0400)]
filefilter: Drop GtkFileFilterInfo

We can just make the filter operate on GFileInfo.
This is in preparation for making GtkFileFilter a
GtkFilter.

Update all users.

5 years agofilefiler: No more floating
Matthias Clasen [Fri, 3 Jul 2020 17:40:58 +0000 (13:40 -0400)]
filefiler: No more floating

Make GtkFileFilter not be initially unowned anymore.
This is in preparation for deriving GtkFileFilter
from GtkFilter. Update all callers.

5 years agoMerge branch 'wip/otte/for-master' into 'master'
Matthias Clasen [Sun, 5 Jul 2020 16:06:16 +0000 (16:06 +0000)]
Merge branch 'wip/otte/for-master' into 'master'

Wip/otte/for master

See merge request GNOME/gtk!2193

5 years agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Sun, 5 Jul 2020 12:51:00 +0000 (12:51 +0000)]
Update Kazakh translation

5 years agoUpdate Romanian translation
Florentina Mușat [Sun, 5 Jul 2020 10:42:46 +0000 (10:42 +0000)]
Update Romanian translation

5 years agostringlist: Export gtk_string_object_new()
Benjamin Otte [Sat, 4 Jul 2020 15:02:44 +0000 (17:02 +0200)]
stringlist: Export gtk_string_object_new()

There are various use cases where it makes sense to construct these -
from our internal testing to using them in flatten- or mapmodels.

5 years agostringlist: Call splice() for adding items after construction
Benjamin Otte [Tue, 30 Jun 2020 21:31:02 +0000 (23:31 +0200)]
stringlist: Call splice() for adding items after construction

This has the benefit of actually allowing NULL to be passed.

5 years agostringlist: Remove n_additions argument from gtk_string_list_splice()
Benjamin Otte [Tue, 30 Jun 2020 17:36:51 +0000 (19:36 +0200)]
stringlist: Remove n_additions argument from gtk_string_list_splice()

char ** arrays are null-terminated everywhere, so make sure they are in
splice(), too.

Also fix the argument to be a const char * const * like in the
constructor.

5 years agostringlist: Clarify docs for gtk_string_list_get_string()
Benjamin Otte [Tue, 30 Jun 2020 17:35:43 +0000 (19:35 +0200)]
stringlist: Clarify docs for gtk_string_list_get_string()

Make sure it's obvious that it behaves like g_list_model_get_item() and
returns NULL for pos >= n_items.

5 years agostringlist: Make one constructor call the other
Benjamin Otte [Tue, 30 Jun 2020 17:35:04 +0000 (19:35 +0200)]
stringlist: Make one constructor call the other

Simplifies code.

5 years agostringlist: Make property not construct-only
Benjamin Otte [Mon, 29 Jun 2020 22:35:25 +0000 (00:35 +0200)]
stringlist: Make property not construct-only

Massively speeds up creation of long stringlists.

5 years agobitset: Add gtk_bitset_new_range()
Benjamin Otte [Tue, 30 Jun 2020 01:29:22 +0000 (03:29 +0200)]
bitset: Add gtk_bitset_new_range()

It's a common use.

5 years agotests: Make testlistview be a list again
Benjamin Otte [Mon, 29 Jun 2020 22:44:00 +0000 (00:44 +0200)]
tests: Make testlistview be a list again

The grid conversion was for testing and should never have been
committed.

5 years agoselectionmodels: Add set_model() support
Benjamin Otte [Sat, 4 Jul 2020 23:08:12 +0000 (01:08 +0200)]
selectionmodels: Add set_model() support

Now that we don't care about item types anymore, we can make the child
models settable.

We try to retain the selection, even when the model changes.

5 years agolistmodels: Stop respecting item-type
Benjamin Otte [Sat, 4 Jul 2020 19:47:48 +0000 (21:47 +0200)]
listmodels: Stop respecting item-type

Simplify all view model APIs and always return G_TYPE_OBJECT as the
item-type for every model.

It turns out nobody uses item-type anyway.

So instead of adding lots of APIs, forcing people to think about it and
trying to figure out how to handle filter or map models that modify item
types, just having an easy life is a better approach.

All the models need to be able to deal with any type of object going
through anyway.

5 years agostringlist: Take a const char const * argument
Benjamin Otte [Sat, 27 Jun 2020 04:31:18 +0000 (06:31 +0200)]
stringlist: Take a const char const * argument

Sucks that we need to cast a char**, but otherwise we need to cast
{"foo", "bar", "baz" } arrays.

5 years agostringfilter: Don't crash if the expression returns ""
Benjamin Otte [Sat, 27 Jun 2020 04:29:58 +0000 (06:29 +0200)]
stringfilter: Don't crash if the expression returns ""

5 years agoa11y: Remove double initialization of variables
Benjamin Otte [Fri, 26 Jun 2020 12:05:02 +0000 (14:05 +0200)]
a11y: Remove double initialization of variables

5 years agoUpdate Ukrainian translation
Yuri Chornoivan [Sat, 4 Jul 2020 17:02:55 +0000 (17:02 +0000)]
Update Ukrainian translation

5 years agoMerge branch 'typo' into 'master'
Matthias Clasen [Sat, 4 Jul 2020 15:48:29 +0000 (15:48 +0000)]
Merge branch 'typo' into 'master'

Fixes typos

See merge request GNOME/gtk!2188

5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Sat, 4 Jul 2020 15:46:19 +0000 (15:46 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

filechooser: Make filtering work again

See merge request GNOME/gtk!2189

5 years agofilechooser: Make filtering work again
Matthias Clasen [Sat, 4 Jul 2020 14:08:28 +0000 (10:08 -0400)]
filechooser: Make filtering work again

One too many lines were dropped when this filter combo
was converted to a dropdown. Bring it back, to make
filtering work again.

5 years agoUpdate POTFILES.in and POTFILES.skip
Piotr Drąg [Sat, 4 Jul 2020 11:37:03 +0000 (13:37 +0200)]
Update POTFILES.in and POTFILES.skip

5 years agoFixes typos
Jordi Mas [Sat, 4 Jul 2020 08:00:25 +0000 (10:00 +0200)]
Fixes typos

5 years agoUpdate Catalan translation
Jordi Mas [Sat, 4 Jul 2020 07:58:03 +0000 (09:58 +0200)]
Update Catalan translation

5 years agoMerge branch 'selection-filter-fixes' into 'master'
Matthias Clasen [Fri, 3 Jul 2020 16:10:03 +0000 (16:10 +0000)]
Merge branch 'selection-filter-fixes' into 'master'

Selection filter fixes

See merge request GNOME/gtk!2186

5 years agotestsuite: Add selection filter model tests
Matthias Clasen [Fri, 3 Jul 2020 13:54:32 +0000 (09:54 -0400)]
testsuite: Add selection filter model tests

Verify that the selection filter changes mirror
the selection changes of the underlying model,
as expected. These tests verify the fixes in
the previous commit.

5 years agoselectionfilter: Fix bugs in signal translation
Matthias Clasen [Fri, 3 Jul 2020 13:53:27 +0000 (09:53 -0400)]
selectionfilter: Fix bugs in signal translation

When the position is 0, we can't check for unchanged
elements below with gtk_bitset_size_in_range. And
we don't need to, either.

And be careful when translating [start,length]
intervals to [first,last] ones. Off-by-one errors
lurk everywhere.

5 years agoUpdate Chinese (China) translation
Boyuan Yang [Fri, 3 Jul 2020 12:49:24 +0000 (12:49 +0000)]
Update Chinese (China) translation

5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Fri, 3 Jul 2020 05:51:29 +0000 (05:51 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

inspector: Fix the monitor list width

Closes #2909

See merge request GNOME/gtk!2185

5 years agoinspector: Fix the monitor list width
Matthias Clasen [Fri, 3 Jul 2020 05:07:13 +0000 (01:07 -0400)]
inspector: Fix the monitor list width

Fixes #2909

5 years agoMerge branch 'wip/exalm/show-title-buttons' into 'master'
Matthias Clasen [Fri, 3 Jul 2020 05:05:24 +0000 (05:05 +0000)]
Merge branch 'wip/exalm/show-title-buttons' into 'master'

headerbar: Show title buttons by default

See merge request GNOME/gtk!2175

5 years agoMerge branch 'selection-filter' into 'master'
Matthias Clasen [Fri, 3 Jul 2020 04:15:12 +0000 (04:15 +0000)]
Merge branch 'selection-filter' into 'master'

Selection filter

See merge request GNOME/gtk!2184

5 years agogtk-demo: Track the selection
Matthias Clasen [Fri, 3 Jul 2020 02:30:44 +0000 (22:30 -0400)]
gtk-demo: Track the selection

Use GtkSelectionFilterModel to track and display the
selection. Add some other selection information for
good measure.

5 years agoAdd a selection filter model
Matthias Clasen [Thu, 2 Jul 2020 22:50:08 +0000 (18:50 -0400)]
Add a selection filter model

This model presents the selection of a GtkSelectionModel
as its own list model.

5 years agofilterlistmodel: Make model not construct-only
Matthias Clasen [Fri, 3 Jul 2020 02:49:27 +0000 (22:49 -0400)]
filterlistmodel: Make model not construct-only

This property wasn't meant to be construct-only.

5 years agobitset: Add APIs needed for a filterlistmodel
Benjamin Otte [Mon, 29 Jun 2020 17:04:07 +0000 (19:04 +0200)]
bitset: Add APIs needed for a filterlistmodel

5 years agoheaderbar: Show title buttons by default
Alexander Mikhaylenko [Mon, 25 May 2020 15:14:58 +0000 (20:14 +0500)]
headerbar: Show title buttons by default

Most of the time show-title-buttons is set to TRUE. Go ahead and make that
the default.

5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Wed, 1 Jul 2020 01:36:47 +0000 (01:36 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

Add gtk_multi_selection_get_model

See merge request GNOME/gtk!2179

5 years agoMerge branch 'wip/baedert/for-master' into 'master'
Matthias Clasen [Wed, 1 Jul 2020 01:35:56 +0000 (01:35 +0000)]
Merge branch 'wip/baedert/for-master' into 'master'

Wip/baedert/for master

See merge request GNOME/gtk!2162

5 years agoMerge branch 'wip/chergert/gtk4-remove-textlayout-vtable' into 'master'
Benjamin Otte [Wed, 1 Jul 2020 01:19:12 +0000 (01:19 +0000)]
Merge branch 'wip/chergert/gtk4-remove-textlayout-vtable' into 'master'

textlayout: remove virtual table indirection

See merge request GNOME/gtk!2178

5 years agoAdd gtk_multi_selection_get_model
Matthias Clasen [Tue, 30 Jun 2020 23:44:17 +0000 (19:44 -0400)]
Add gtk_multi_selection_get_model

This getter was missing.

5 years agotextlayout: remove virtual table indirection
Christian Hergert [Wed, 1 Jul 2020 00:38:31 +0000 (17:38 -0700)]
textlayout: remove virtual table indirection

GtkTextLayout is private now and therefore we can drop all of
the indirection through the class vtable. Instead, just call the
implementations directly and remove the unused vtable entries
for default signal handlers.

5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Tue, 30 Jun 2020 22:52:18 +0000 (22:52 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

Drop unnecessary uses of gtk_style_context_add_class

See merge request GNOME/gtk!2177

5 years agoMerge branch 'inspector-list-model' into 'master'
Matthias Clasen [Tue, 30 Jun 2020 22:17:29 +0000 (22:17 +0000)]
Merge branch 'inspector-list-model' into 'master'

Inspector list model support

See merge request GNOME/gtk!2176

5 years agoDrop unnecessary uses of gtk_style_context_add_class
Matthias Clasen [Tue, 30 Jun 2020 21:39:37 +0000 (17:39 -0400)]
Drop unnecessary uses of gtk_style_context_add_class

We can use gtk_widget_add_css_class instead, most places.

5 years agoinspector: Avoid a use of gtk_style_context_add_class
Matthias Clasen [Tue, 30 Jun 2020 21:10:05 +0000 (17:10 -0400)]
inspector: Avoid a use of gtk_style_context_add_class

We have gtk_widget_add_css_class for this now.

5 years agoinspector: proper list model support
Matthias Clasen [Tue, 30 Jun 2020 18:50:01 +0000 (14:50 -0400)]
inspector: proper list model support

Add a data tab for list models that allows exploring
the objects in the model.

5 years agoMerge branch 'wip/on-the-surface-good-fences-can-make-bad-neighbors' into 'master'
Matthias Clasen [Tue, 30 Jun 2020 19:21:45 +0000 (19:21 +0000)]
Merge branch 'wip/on-the-surface-good-fences-can-make-bad-neighbors' into 'master'

x11: Handle window getting unmap while frame still pending

Closes #2902

See merge request GNOME/gtk!2168

5 years agoinspector: Rename DataList -> TreeData
Matthias Clasen [Tue, 30 Jun 2020 19:17:14 +0000 (15:17 -0400)]
inspector: Rename DataList -> TreeData

Rename the DataList object to TreeData, in preparation
for adding a ListData object for list models. While
we are touching it, modernize it a bit (drop the Private
struct, use a layout manager, etc).

5 years agox11: Avoid thawing surface until frame is drawn
Ray Strode [Tue, 30 Jun 2020 18:15:53 +0000 (14:15 -0400)]
x11: Avoid thawing surface until frame is drawn

Since commit 972134abe48a4c9c7b6ad41b0723f30f4e7ae16b a frame getting
drawn has three states (with the vendor nvidia driver at least):

1. drawn by gtk waiting on the GPU
2. drawn by GPU waiting on the compositor
3. drawn by compositor

Those three states are encoded in two flags: frame_pending and
frame_still_painting.

frame_pending means step 1 is done, but step 2 and 3 are still
in progress.  frame_still_painting means step 2 is still in progress.

After step 1 is finished the surface is frozen until step 3 is finished.

When the compositor notifies gtk it's done with step 3, with a
_NET_WM_FRAME_DRAWN client message, the toolkit thaws the surface to
allow the next frame to proceed.

The compositor sometimes sends gtk a _NET_WM_FRAME_DRAWN client message
between steps 1 and 2.  This message should be ignored because it's not
a reply to the current frame.

Unfortunately, gtk currently assumes if it gets a _NET_WM_FRAME_DRAWN
client message while waiting for step 2 that it's actually at step 3,
and proceeds to draw a new frame while the existing frame is still
pending, leading to a blown assertion.

This commit addresses the problem by ignoring _NET_WM_FRAME_DRAWN
client messages from the compositor unless actually expecting one.

Fixes: #2902
5 years agox11: Handle window getting unmapped while frame still pending
Ray Strode [Mon, 29 Jun 2020 14:21:58 +0000 (10:21 -0400)]
x11: Handle window getting unmapped while frame still pending

Since commit 972134abe48a4c9c7b6ad41b0723f30f4e7ae16b we now call
glClientWaitSync for the vendor nvidia driver, to know when a frame
is ready for the compositor to process.

If a surface is hidden while a frame is still being rendered by the GPU,
the surface will never produce the damage event the code relies on to
trigger the call to glClientWaitSync. This leaves the fence dangling,
and the next time the surface is shown, it will start a fresh frame
and blow an assertion since the fence from the last frame is still
hanging around.

This commit ensures a frame gets fully wrapped up before hiding a
surface.

5 years agoinspector: Remove list model support from the property editor
Matthias Clasen [Tue, 30 Jun 2020 18:22:01 +0000 (14:22 -0400)]
inspector: Remove list model support from the property editor

This makes the inspector lock up when used with any production
size list model, and blocks access to properties of the model
itself. Instead, we'll make the model available as an object
and add a data tab for list model contents, like we already
do for tree models.

5 years agoMerge branch 'issue-2904' into 'master'
Matthias Clasen [Tue, 30 Jun 2020 12:03:06 +0000 (12:03 +0000)]
Merge branch 'issue-2904' into 'master'

Add nullable annotations for gtk_cclosure_expression_new()

Closes #2904

See merge request GNOME/gtk!2172

5 years agoAdd nullable annotations for gtk_cclosure_expression_new()
Emmanuele Bassi [Tue, 30 Jun 2020 11:11:21 +0000 (12:11 +0100)]
Add nullable annotations for gtk_cclosure_expression_new()

Fixes: #2904
5 years agogtklistitemfactory: Cosmetic documentation fixes
Matthias Clasen [Tue, 30 Jun 2020 02:08:51 +0000 (22:08 -0400)]
gtklistitemfactory: Cosmetic documentation fixes

5 years agobuilderlistitemfactory: Documentation fixes
Matthias Clasen [Tue, 30 Jun 2020 02:08:21 +0000 (22:08 -0400)]
builderlistitemfactory: Documentation fixes

5 years agoexpression: Add to the docs
Matthias Clasen [Mon, 29 Jun 2020 22:17:00 +0000 (18:17 -0400)]
expression: Add to the docs

Add some more long-form explanation of what expressions
are about and where they are used.

5 years agoDrop GtkFunctionsListItemFactory
Matthias Clasen [Mon, 29 Jun 2020 20:36:46 +0000 (16:36 -0400)]
Drop GtkFunctionsListItemFactory

It has been superseded by GtkSignalsListItemFactory.